#pragma once 

#include <iostream>

using namespace std;

void function_1(int x);

//声明和定义分离
//template<class T>
//void function_2(const T& x);

//声明和定义不分离
template<class T>
void function_2(const T& x);

template<class T>
void function_2(const T& x)
{
    cout << "function_2(const T& x)" << endl;
}

//类模板声明定义分离
//template<class T>
//class A
//{
//public:
//    A();
//
//private:
//    T _a;
//};


//类模板声明定义不分离
template<class T>
class A
{
public:
    A();

private:
    T _a;
};

template<class T>
A<T>::A()
    :_a(0)
{
    cout << "class A<T>" << endl;
}

